package waybill

import (
	"sync"
)

// WaybillApplyUpdateInfo 结构体
type WaybillApplyUpdateInfo struct {
	// 挑拣规则（大头笔信息）
	ShortAddress string `json:"short_address,omitempty" xml:"short_address,omitempty"`
	// 收货网点编码
	ConsigneeBranchName string `json:"consignee_branch_name,omitempty" xml:"consignee_branch_name,omitempty"`
	// 收货网点信息
	ConsigneeBranchCode string `json:"consignee_branch_code,omitempty" xml:"consignee_branch_code,omitempty"`
	// --
	WaybillCode string `json:"waybill_code,omitempty" xml:"waybill_code,omitempty"`
	// 集包地、目的地中心名称
	PackageCenterName string `json:"package_center_name,omitempty" xml:"package_center_name,omitempty"`
	// 集包地、目的地中心代码。打印时根据该 code 生成目的地中心的条码，条码生成的算法与对应的电子面单条码一致
	PackageCenterCode string `json:"package_center_code,omitempty" xml:"package_center_code,omitempty"`
	// --
	TradeOrderInfo *TradeOrderInfo `json:"trade_order_info,omitempty" xml:"trade_order_info,omitempty"`
}

var poolWaybillApplyUpdateInfo = sync.Pool{
	New: func() any {
		return new(WaybillApplyUpdateInfo)
	},
}

// GetWaybillApplyUpdateInfo() 从对象池中获取WaybillApplyUpdateInfo
func GetWaybillApplyUpdateInfo() *WaybillApplyUpdateInfo {
	return poolWaybillApplyUpdateInfo.Get().(*WaybillApplyUpdateInfo)
}

// ReleaseWaybillApplyUpdateInfo 释放WaybillApplyUpdateInfo
func ReleaseWaybillApplyUpdateInfo(v *WaybillApplyUpdateInfo) {
	v.ShortAddress = ""
	v.ConsigneeBranchName = ""
	v.ConsigneeBranchCode = ""
	v.WaybillCode = ""
	v.PackageCenterName = ""
	v.PackageCenterCode = ""
	v.TradeOrderInfo = nil
	poolWaybillApplyUpdateInfo.Put(v)
}
